package cn.hill4j.tool.spring.ext.alias;

import cn.hill4j.tool.core.obj.collect.CollectionTools;

import java.util.Set;

/**
  * ClassName: AliasSupper
  * Description: spring扩展别名定义接口
  * @author hillchen
  * Date 2023/8/8
  * @version: 1.0
  */
public interface AliasSupper extends AliasesSupper{
    /**
     * @author hillchen
     * Description: 定义spring bean扩展别名
     * Date 2023/8/8 22:53
     * @return String[]
     **/
    Set<String> aliases() ;
    /**
     * @author hillchen
     * Description: 定义spring bean扩展别名分组名：默认def
     * Date 2023/8/8 22:53
     * @return String
     **/
    default String groupName(){
        return BeansAliasUtils.DEF_GROUP_NAME;
    }
    /**
     * @author hillchen
     * Description: 构建spring bean扩展别名列表
     * Date 2023/8/8 23:07
     **/
    default Set<BeanAliasInfo> buildBeanAliasInfos(){
        return CollectionTools.toSet(aliases(),alias -> new BeanAliasInfo(alias,groupName()));
    }
}
